package br.com.sgi.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;

import com.sun.istack.NotNull;

import br.com.sgi.util.ICombobox;


@Entity
@Table(name="IGREJA", schema="SGI")
@NamedQueries({
@NamedQuery(
	    name="buscarIgrejaPorCoSistema",
	    query="SELECT i FROM Igreja i " +
	    	  "WHERE i.sistema.coSeqSistema =:coSistema"),
@NamedQuery(
	    name="buscarIgrejaPorId",
	    query=" SELECT i FROM Igreja i " +
	    	  " WHERE i.sistema.coSeqSistema =:coSisteja" +
	    	  " AND i.coSeqIgreja = :coSeqIgreja" )
})
public class Igreja  implements ICombobox{

	
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
//	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "seq_igreja_seqigreja")  
//	@SequenceGenerator(name = "seq_igreja_seqigreja", sequenceName = "SGI.seq_igreja") 
	@Column(name="CO_SEQ_IGREJA")
	private Long coSeqIgreja;
	
	private String nome;
	
	@Size(max=100)
	private String logradouro;
	
	private Integer numero;
	
	@Size(max=100)
	private String bairro;
	
	@Size(max=60)
	private String cidade;
			
	@Size(max=2)
	private String uf;
	
	@Size(max=25)
	private String cep;
	
	@Size(max=25)
	private String telefone;
	
	private String cnpj;
	
	@NotNull
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="CO_SEQ_SISTEMA")
	private Sistema sistema;
	
	@Column(name="TIPO_IGREJA")
	@Size(max=2)
	private String tipoIgreja;
	
	@Size(max=2)
	private String situacao;
	
	@Size(max=30)
	private String celular;
	
	@Size(max=30)
	@Column(name="SG_TELEFONE")
	private String segundoTelefone;
	
	@Column(name="DT_INAUGURACAO")	
	private Date dtInauguracao;
	
	private String email;

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getLogradouro() {
		return logradouro;
	}

	public void setLogradouro(String logradouro) {
		this.logradouro = logradouro;
	}

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public String getBairro() {
		return bairro;
	}

	public void setBairro(String bairro) {
		this.bairro = bairro;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public String getCep() {
		return cep;
	}

	public void setCep(String cep) {
		this.cep = cep;
	}

	public String getTelefone() {
		return telefone;
	}

	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}

	public String getCnpj() {
		return cnpj;
	}

	public void setCnpj(String cnpj) {
		this.cnpj = cnpj;
	}

	public String getTipoIgreja() {
		return tipoIgreja;
	}

	public void setTipoIgreja(String tipoIgreja) {
		this.tipoIgreja = tipoIgreja;
	}

	public Long getCoSeqIgreja() {
		return coSeqIgreja;
	}

	public void setCoSeqIgreja(Long coSeqIgreja) {
		this.coSeqIgreja = coSeqIgreja;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Override
	public Object getValue() {
		return getNome();
	}
	
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((coSeqIgreja == null) ? 0 : coSeqIgreja.hashCode());
		return result;
	}

	public String getSituacao() {
		return situacao;
	}

	public void setSituacao(String situacao) {
		this.situacao = situacao;
	}

	public Date getDtInauguracao() {
		return dtInauguracao;
	}

	public void setDtInauguracao(Date dtInauguracao) {
		this.dtInauguracao = dtInauguracao;
	}

	public Sistema getSistema() {
		return sistema;
	}

	public void setSistema(Sistema sistema) {
		this.sistema = sistema;
	}

	public String getCelular() {
		return celular;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getSegundoTelefone() {
		return segundoTelefone;
	}

	public void setSegundoTelefone(String segundoTelefone) {
		this.segundoTelefone = segundoTelefone;
	}

}
